﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STLGROUP.Layers.Base;
using STLGROUP.Layers.DataAccessLayers;
using STLGROUP.Layers.Common;

namespace STLGROUP.Layers.BLL
{
    public partial class DT_NhanVienBLL : BaseBLL
    {
        private int MaxMaNhanVien;

        private void GetMaxMaNhanVien()
        {
            DT_NhanVien employee = Cache.Context.DT_NhanVien.FirstOrDefault();

            if (employee == null)
            {
                MaxMaNhanVien = 1;
            }
            else
            {
                MaxMaNhanVien = int.Parse(employee.MaNhanVien.Substring(2, employee.MaNhanVien.Length - 2));
            }
        }

        private ACL_TaiKhoan GetTaiKhoanByIDNhanVien(int idNhanVien)
        {
            var data = from s in Cache.Context.ACL_TaiKhoan
                       where s.IDNhanVien == idNhanVien
                       select s;

            IEnumerable<ACL_TaiKhoan> tk = data.ToArray();


            if (tk.Count<ACL_TaiKhoan>() == 0)
            {
                return null;
            }
            return tk.FirstOrDefault();

        }

        public string GetNewMaNhanVien()
        {
            MaxMaNhanVien++;
            return "NV" + (MaxMaNhanVien - 1).ToString().PadLeft(5, '0');
        }

        public string GetNewMaNhanVien(int idNhanVien)
        {
            MaxMaNhanVien++;
            return "NV" + idNhanVien.ToString().PadLeft(5, '0');
        }

        public IQueryable<DT_NhanVien> GetData()
        {
            return this.Context.DT_NhanVien;
        }

        public int UpdateNhanVien(IQueryable<DT_NhanVien> data)
        {
            if (data != null)
            {
                int maxIDNhanVien = MaxMaNhanVien;
                ACL_TaiKhoan tk;

                foreach (DT_NhanVien item in data)
                {
                    item.MaNhanVien = GetNewMaNhanVien(item.IDNhanVien);
                    item.IDTrangThaiNhanVien = item.IDTrangThaiNhanVien.HasValue ? item.IDTrangThaiNhanVien.Value : (int)StructsEnums.EnumTrangThaiNhanVien.DangLamViec;

                    //check ton tai
                    tk = GetTaiKhoanByIDNhanVien(item.IDNhanVien);

                    this.Context.SaveChanges();

                    if (tk == null)
                    {
                        tk = new ACL_TaiKhoan();
                        tk.IDNhomNguoiDung = item.IDChucVu; // chuc vu la Nhom Nguoi Dung -> khong dung bang DM_ChucVu //sang note
                        tk.TenDangNhap = item.MaNhanVien;
                        tk.MatKhau = UICommon.Encryption(item.MaNhanVien.ToLower().Trim());
                        tk.GoiYMatKhau = item.MaNhanVien;
                        tk.NguoiTao = UICommon.CurrentUserInfo.IDNhanVien;
                        tk.NgayTao = UICommon.GetDateTime();
                        tk.IDNhanVien = item.IDNhanVien;

                        this.Context.ACL_TaiKhoan.AddObject(tk);
                    }
                    else
                    {
                        tk.IDNhomNguoiDung = item.IDChucVu;
                    }
                }

                return this.Context.SaveChanges();
            }

            return -1;
        }


    }
}
